package com.tjetc.custumer;

// 测试自定义异常
public class TestException {
    public static void main(String[] args) {
        try {
            f();
        } catch (Exception e) {
            System.out.println(e);
            throw new RuntimeException(e);
        }
    }

    static void f() {
        throw new SystemException(SystemErrorCode.CODE1, 1, 1);
    }


    /*
        异常的最佳实践：
            1. 不要使用异常来控制业务逻辑 应该使用if-else
            2. 如果处理不了，请不要捕获   使用try--finally
            3. 在catch语句中不要使用printStackTrace() ：
                这个方法是将异常栈信息打印到控制台（只允许在本地测试时使用）因为正式开发环境所有的日志信息全部在linux系统中
            4. 二次抛出异常时，要带上异常链： throw new RuntimeException(e);
            5. 在需要的地方声明特定的受检异常： 起到了一个提醒的作用

            7. 可以直接捕获 Exception，但是要注意场景： 最好还是根据异常的种类来具体捕获 但是我们有时候为了方便直接捕获 也可以

            9. 不要在finally中抛出异常
            10. 在finally中释放资源
            11. 如果不想处理异常，则使用finally块而不是catch块
            12. 善于使用自定义异常
            13. try块中的代码要尽可能的少：不可能出现错误的代码不要放在异常里 要对异常进行细粒化处理


     */
}
